API Gateway で API の作成が BadRequestException になったときの対処方法
困っていた内容
AWS CLI で新しい API を作成するとBadRequestException
が表示されます。
AWS 公式ドキュメントによるとパラメータが間違っているとのことですが、まったく同じパラメータが別の環境では成功しました。エラーになる理由を教えてください。
$ aws apigatewayv2 create-api \ --name hato-http-api \ --protocol-type HTTP An error occurred (BadRequestException) when calling the CreateApi operation: HTTP APIs are not available in this AWS region
どう対応すればいいの?
エラーメッセージの後半をご確認ください。
BadRequestException
は基本的にオプションが間違っている場合に表示され、具体的な内容もエラーメッセージの一部として表示されます。今回の場合は「HTTP APIs are not available in this AWS region」の部分が該当し、指定した API タイプ(HTTP API)をリージョンがサポートしてないことが理由となります。
リージョンによってサポートされる機能には制限があることを認識し、必要に応じて別のリージョンや別タイプの利用をご検討ください。
なお、その他のエラーメッセージの場合は AWS CLI のリファレンスもご参照ください。
$ aws apigatewayv2 create-api \ --name hato-http-api \ --protocol-type HTTP --route-selection-expression '${request.method} ${request.body}' An error occurred (BadRequestException) when calling the CreateApi operation: Unexpected variable in selection expression: ${request.body}
create-api — AWS CLI 2.9.15 Command Reference
For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}.
参考資料
BadRequestException | API Gateway Client - AWS SDK for JavaScript v3
The submitted request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.
インポート中のエラーと警告 - Amazon API Gateway
無効な OpenAPI ドキュメントなど、大きな問題に対してエラーが生成される場合があります。エラーは、失敗のレスポンスの例外 (例: BadRequestException) として返されます。